package com.wyix;


/**
 * 糖果收集游戏
 *
 * @author wangdx
 * @since 2025/8/1
 */
public class CandyCollection {
    public static void main(String[] args) {
        // 定义一个存储糖果颜色的数组
        String[] candies = {"红色", "蓝色", "黄色", "绿色", "紫色"};

        System.out.println("玩家收集到的糖果有：");
        // 遍历数组，输出收集到的糖果颜色
        for (int i = 0; i < candies.length; i++) {
            System.out.println("第 " + (i + 1) + " 颗糖果：" + candies[i]);
        }

        //警告信息提示你使用了手动数组复制，在 Java 里，手动复制数组效率较低，且代码不够简洁。Java 提供了 System.arraycopy 和 Arrays.copyOf 方法来高效复制数组。下面分别给出使用这两种方法修改后的代码：
        // 玩家又收集到一颗橙色糖果
//        String[] newCandies = new String[candies.length + 1];
//        for (int i = 0; i < candies.length; i++) {
//            newCandies[i] = candies[i];
//        }
        // 使用 System.arraycopy 方法复制数组
        //System.arraycopy 是一个本地方法，执行效率较高，适合需要精确控制复制范围的场景。Arrays.copyOf 方法则更简洁，会自动创建一个新数组并复制原数组元素，适合需要扩容数组的场景。这里推荐使用 Arrays.copyOf 方法，因为代码更简洁。
//        System.arraycopy(candies, 0, newCandies, 0, candies.length);
        String[] newCandies = java.util.Arrays.copyOf(candies, candies.length + 1);

        newCandies[candies.length] = "橙色";

        System.out.println("\n玩家又收集到一颗糖果后，拥有的糖果有：");
        for (int i = 0; i < newCandies.length; i++) {
            System.out.println("第 " + (i + 1) + " 颗糖果：" + newCandies[i]);
        }
    }
}